﻿/**
 * Create in 2012-2-3.
 */
package kit4j.ui.cs.awt.image;

import java.awt.Image;
import java.awt.Insets;

import kit4j.generator.keyed.IKeyedGenerator;

/**
 * 验证图像生成器接口。该接口定义了每个生成器应该实现的可配置属性集。
 * 
 * @author MiniKnife
 * 
 */
public interface IVerificationImageGenerator extends IKeyedGenerator<String, Image> {

	/**
	 * 返回所生成的图像的宽度。
	 * 
	 * @return 图像宽度
	 */
	int getImageWidth();

	/**
	 * 设置所生成的图像的高度。
	 * 
	 * @param width
	 *            图像高度
	 */
	void setImageWidth(int width);

	/**
	 * 返回所生成的图像的高度。
	 * 
	 * @return 图像高度
	 */
	int getImageHeight();

	/**
	 * 设置所生成的图像的高度。
	 * 
	 * @param height
	 *            图像高度
	 */
	void setImageHeight(int height);

	/**
	 * 返回所生成的图像的图像类型。
	 * 
	 * @return 图像类型
	 * @see #setImageType(int)
	 */
	int getImageType();

	/**
	 * 设置所生成的图像的图像类型。
	 * 
	 * @param imageType
	 *            图像类型
	 * @see {@link java.awt.image.BufferedImage#TYPE_INT_RGB TYPE_INT_RGB},
	 *      {@link java.awt.image.BufferedImage#TYPE_INT_ARGB TYPE_INT_ARGB},
	 *      {@link java.awt.image.BufferedImage#TYPE_INT_ARGB_PRE TYPE_INT_ARGB_PRE},
	 *      {@link java.awt.image.BufferedImage#TYPE_INT_BGR TYPE_INT_BGR},
	 *      {@link java.awt.image.BufferedImage#TYPE_3BYTE_BGR TYPE_3BYTE_BGR},
	 *      {@link java.awt.image.BufferedImage#TYPE_4BYTE_ABGR TYPE_4BYTE_ABGR}, 
	 *      {@link java.awt.image.BufferedImage#TYPE_4BYTE_ABGR_PRE TYPE_4BYTE_ABGR_PRE},
	 *      {@link java.awt.image.BufferedImage#TYPE_BYTE_GRAY TYPE_BYTE_GRAY},
	 *      {@link java.awt.image.BufferedImage#TYPE_USHORT_GRAY TYPE_USHORT_GRAY},
	 *      {@link java.awt.image.BufferedImage#TYPE_BYTE_BINARY TYPE_BYTE_BINARY},
	 *      {@link java.awt.image.BufferedImage#TYPE_BYTE_INDEXED TYPE_BYTE_INDEXED},
	 *      {@link java.awt.image.BufferedImage#TYPE_USHORT_565_RGB TYPE_USHORT_565_RGB},
	 *      {@link java.awt.image.BufferedImage#TYPE_USHORT_555_RGB TYPE_USHORT_555_RGB}
	 */
	void setImageType(int imageType);

	/**
	 * 返回所生成的图像显示字体的最小尺寸。
	 * 
	 * @return 字体大小
	 */
	float getMinFontSize();

	/**
	 * 设置所生成的图像显示字体的最小尺寸。
	 * 
	 * @param fontSize
	 *            字体大小
	 */
	void setMinFontSize(float fontSize);
	
	/**
	 * 返回所生成的图像显示字体的最大尺寸。
	 * 
	 * @return 字体大小
	 */
	float getMaxFontSize();
	
	/**
	 * 设置所生成的图像显示字体的最大尺寸。
	 * 
	 * @param fontSize
	 *            字体大小
	 */
	void setMaxFontSize(float fontSize);

	/**
	 * 返回所生成的图像验证码字符串与图像边界的间距。
	 * 
	 * @return 间距
	 */
	Insets getVerificationCodeMargin();

	/**
	 * 设置所生成的图像验证码字符串与图像边界的间距。
	 * 
	 * @param margin
	 *            间距
	 */
	void setVerificationCodeMargin(Insets margin);
}
